from fastapi import FastAPI, Query
import uvicorn

from prompt import Prompt

# 创建 FastAPI 实例
app = FastAPI(
    title="My FastAPI Service",
    description="这是一个基于 FastAPI 的简单服务",
    version="1.0.0",
    docs_url="/docs",  # Swagger UI 地址
    redoc_url="/redoc"  # ReDoc 文档地址
)


# 全局统一响应格式
def make_response(result=None, error=0, message="请求成功"):
    """
    统一返回格式
    :param result: 返回的数据内容
    :param error: 错误码，0 表示无错误
    :param message: 提示信息
    :return: JSON 格式响应
    """
    return {
        "error": error,
        "result": result,
        "message": message
    }


# 根路径接口
@app.get("/")
def read_root():
    return {"message": "欢迎使用 FastAPI！", "status": "running"}


@app.get("/get_prompt_list")
def get_prompt_list(
        version: str = Query(..., alias="version", description="API 版本号"),
        type: str = Query(..., alias="type", description="prompt 类型")
):
    """
    获取可用的 prompt 列表，支持版本参数
    """
    try:
        prompt = Prompt(version)
        prompt = prompt.get_prompt_list(type)
        return make_response(prompt)
    except Exception as e:
        return {"error": str(e)}

@app.get("/get_prompt")
def get_prompt(
        version: str = Query(..., alias="version", description="API 版本号"),
        type: str = Query(..., alias="type", description="prompt 类型"),
        name: str = Query(..., alias="name", description="prompt 名称"),
):
    """
    获取指定名称的 prompt，支持版本参数
    """
    try:
        prompt = Prompt(version)
        prompt = prompt.get_prompt(type, name)
        return make_response(prompt)
    except Exception as e:
        return {"error": str(e)}


# 启动入口
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8088)
